const fs = require('fs')
let buf = Buffer.alloc(10)

// read : 所谓的读操作就是将数据从磁盘文件中写入到 buffer 中
// data.txt 内容为 1234567890
// fs.open('data.txt','r',(err,rfd)=>{
// 第一个参数（fd）就是当前操作的文件，可以通过打开文件的第二个参数追踪到当前操作的文件资源
// 第二个参数（buffer）表示当前的缓冲区
// 第三个参数 (offset) 表示从 buffer 的那个位置开始写入（写入buffer里）
// 第四个参数 (length) 表示当前写入的是长度
// 第五个参数 (position) 表示从对应的字节开始读起

// fs.read(rfd,buf,0,3,0,(err,readBytes,data)=>{
//     console.log(readBytes,'readBytes'); // 3 
//     console.log(data,'data'); // <Buffer 31 32 33 00 00 00 00 00 00 00>
//     console.log(data.toString(),'string'); // 123
// })

// fs.read(rfd,buf,0,4,0,(err,readBytes,data)=>{
//     console.log(readBytes,'readBytes'); // 4 
//     console.log(data,'data'); // <Buffer 31 32 33 34 00 00 00 00 00 00>
//     console.log(data.toString(),'string'); // 1234
// })

// fs.read(rfd,buf,1,4,0,(err,readBytes,data)=>{
//     console.log(readBytes,'readBytes'); // 4 
//     console.log(data,'data'); // <Buffer 00 31 32 33 34 00 00 00 00 00> （因为读操作第一个参数是从1开始的所以第一个为空）
//     console.log(data.toString(),'string'); // (这里面空格)1234
// })

//  fs.read(rfd,buf,0,3,2,(err,readBytes,data)=>{
//     console.log(readBytes,'readBytes'); // 3 
//     console.log(data,'data'); // <Buffer 33 34 35 00 00 00 00 00 00 00>
//     console.log(data.toString(),'string'); // 345
// })
// })

// write 将缓冲区里面的内容写入的磁盘文件中
buf = Buffer.from('1234567890')
// w表示写操作
fs.open('big.txt', 'w', (err, wfd) => {

    // 第一个参数（fd）就是当前操作的文件，可以通过打开文件的第二个参数追踪到当前操作的文件资源
    // 第二个参数（buffer）表示当前的缓冲区
    // 第三个参数 (offset) 表示从 buffer 的那个位置开始读取数据写入文件
    // 第四个参数 (length) 表示当前写入的是长度
    // 第五个参数 (position) 表示从对应的字节开始读起 一般不做修改 写 0 就好了

    // fs.write(wfd, buf, 0, 3, 0, (err, written, buffer) => {
    //     // big.txt 文件内容为 123
    //     console.log(written, 'written'); // 3
    //     console.log(buffer, 'buffer'); //  <Buffer 31 32 33 34 35 36 37 38 39 30>
    //     console.log(buffer.toString(), 'buffer'); // 1234567890
    //     fs.close(wfd)
    // })

    // fs.write(wfd, buf, 0, 4, 0, (err, written, buffer) => {
    //     // big.txt 文件内容为 1234
    //     console.log(written, 'written'); // 4
    //     console.log(buffer, 'buffer'); //  <Buffer 31 32 33 34 35 36 37 38 39 30>
    //     console.log(buffer.toString(), 'buffer'); // 1234567890
    //     fs.close(wfd)
    // })

    fs.write(wfd, buf, 1, 3, 0, (err, written, buffer) => {
        // big.txt 文件内容为 234
        console.log(written, 'written'); // 3
        console.log(buffer, 'buffer'); //  <Buffer 31 32 33 34 35 36 37 38 39 30>
        console.log(buffer.toString(), 'buffer'); // 1234567890
        fs.close(wfd)
    })
})
